package bishiiqiangxun;

import java.util.Scanner;

public class Test3 {
    //day21  第三题: 最长回文子序列
    //算法 :动态规划  用dp表示 i到j 的最长回文子序列的长度
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        //用一个dp数组表示 从i到j的范围内 最长的回文子序列
        int n = str.length();
        int[][] dp = new int[n][n];
        for(int left = n-1; left >= 0; left--) {
            dp[left][left] = 1;  //一个字符肯定是回文 且长度为1
            for(int right = left+1; right < n; right++) {
                if(str.charAt(left) == str.charAt(right)) {
                    //相等直接加2
                    dp[left][right] = dp[left+1][right-1]+2;
                }else{
                    dp[left][right] = Math.max(dp[left+1][right],dp[left][right-1]);
                }
            }
        }
        System.out.println(dp[0][n-1]);
    }
}
